package com.eptok.yspay.opensdkjava.pojo.content;

import lombok.Data;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * @Author YIFan
 * @Date 2022/4/13 15:42
 * @Version 1.0
 * @DESC //TODO 退款content
 */
@Data
public class TradeRefundContent implements Serializable {

    private String out_trade_no;//String(1,32)	Y	商户原交易订单号, 示例值：201805256843192280647118
    private String shopdate;//String(8,8)	Y	商户日期(该参数做交易与查询时需要一致) 该日期需在当日的前后一天时间范围之内 示例值：20180525
    private String trade_no;//String(1，30)	N	银盛原交易流水号 示例值：311160414497667096
    private String refund_amount;//	Number(10,2)	Y	需要退款的金额，该金额不能大于订单金额,单位为元，支持两位小数，Number(10,2)指10位长度，2位精度 示例值：111.00
    private String refund_reason;//	String(1，50)	Y	退款的原因说明，该参数最长为50个汉字。
    private String out_request_no;//	String(1，32)	Y	商户系统生成的退款订单号，标识一次退款请求，同一笔交易多次退款需要保证唯一。该参数支持汉字，最大长度为16个。用同一订单号同一退款流水号继续退款时，则会返回第一次退款的结果不会继续退款 示例值：RD2012061713107



    public static Map<String, Object> bizContent(TradeRefundContent content){
        //业务参数: 业务参数说明详细见接口文档
        /** -----------组装业务参数开始 -------------*/
        Map<String,Object> params = new HashMap<>();
        //商户生成的订单号，生成规则前8位必须为交易日期，如20180525，范围跨度支持包含当天在内的前后一天，且只能由大小写英文字母、数字、下划线及横杠组成
        params.put("out_trade_no",content.getOut_trade_no());
        //商户日期(该参数做交易与查询时需要一致) 该日期需在当日的前后一天时间范围之内
        params.put("shopdate",content.getShopdate());
        //银盛交易号 特殊可选
        params.put("trade_no",content.getTrade_no());
        //需要退款的金额，该金额不能大于订单金额,单位为元，支持两位小数，Number(10,2)指10位长度，2位精度
        params.put("refund_amount",content.getRefund_amount());
        //退款的原因说明
        params.put("refund_reason",content.getRefund_reason());
        //标识一次退款请求，同一笔交易多次退款需要保证唯一。该参数支持汉字，最大长度为16个。用同一订单号同一退款流水号继续退款时，则会返回第一次退款的结果不会继续退款
        params.put("out_request_no",content.getOut_request_no());

        return params;
    }

}
